package Management.c;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.List;

public class StudentDao
/*
public关键字
声明主函数为public就是告诉其他的类可以访问这个函数
static关键字，告知编译器main方法是一个静态方法
也就是说main方法中的代码是存储在静态存储区（方法区）的
当定义了类以后这段代码就已经存在了
只要类被加载后，就可以使用该方法，
不需要通过实例化来访问，
可直接通过类名.main()直接访问
void关键字表明main()的返回值是无类型
main是jvm识别的特殊方法名，是程序的入口方法
同一个.java文件可以有多个main方法
只有与文件名相同的用public修饰的类中的main()方法才能作为整个程序的入口方法
 */
{
    public void insertAll(List<StudentPojo> slist) throws SQLException {

        // 2. 创建连接 localhost:1433;DatabaseName=数据库名
        Connection conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=xie", "sa", "123456");
        // sql中的？代表占位符，  预处理执行器特有

        for (int i = 0; i < slist.size(); i++)
        /*
        for循环是编程语言中一种循环语句，
        循环语句由循环体及循环的判定条件两部分组成
        其表达式为：for
        （单次表达式;条件表达式;末尾循环体）
        {中间循环体；}
        for循环小括号里第一个“;”号前为一个为不参与循环的单次表达式，
        作为某一变量的初始化赋值语句,
        用来给循环控制变量赋初值；
         也可用来计算其它与for循环无关但先于循环部分处理的一个表达式
“;”号之间的条件表达式是一个关系表达式
循环的正式开端
当条件表达式成立时执行中间循环体
执行的中间循环体可以为一个语句
当中间循环体只有一个语句时
其大括号{}可以省略
执行完中间循环体后接着执行末尾循环体
         */
        {
           StudentPojo item = slist.get(i);
            String sql = "insert into student_mst(sno, sname) values(?, ?)";
            PreparedStatement ps = conn.prepareStatement(sql);
            // 填充第几个？
            ps.setString(1, item.getSno());
            ps.setString(2, item.getSname());

            // 3
            // exuecuteQuery 用于 Select  executeUpdate()用于修改CUD
            int rs = ps.executeUpdate();
        }

        conn.close();

    }
}
